#ifndef __PROCESS_DATA_H__
#define __PROCESS_DATA_H__

#include "IOptionsControl.h"



class C_L3030300: public virtual IProcessData
{
INIT_CLASS_SINGLETON(C_L3030300)

public:
	const bool Calculate(const char * pszKeyVal, IValueSet * ptrValList);

private:
	void UpdateData(const char * pszItem, IStkItem * ptrStkItem, void * ptrResult);
};

class C_L3030101 : public virtual IProcessData
{
INIT_CLASS_SINGLETON(C_L3030101)
public:
	const bool Calculate(const char * pszKeyVal, IValueSet * ptrValList);
};

class C_L3030303 : public virtual IProcessData
{
INIT_CLASS_SINGLETON(C_L3030303)
public:
	const bool Calculate(const char * pszKeyVal, IValueSet * ptrValList);
};

class C_L3030304 : public virtual IProcessData
{
INIT_CLASS_SINGLETON(C_L3030304)
public:
	const bool Init(const void * pvdPara, char * pszMsgTxt, int iMsgTxtSize);
	const bool Calculate(const char * pszKeyVal, IValueSet * ptrValList);

private:
	void InitContract(IStkItem * ptrStkItem, IPacket * ptrPktJson); 

private:
	ITaskQueue * m_ptrCalculateQueue;
};

class C_L2934010 : public virtual IProcessData
{
INIT_CLASS_SINGLETON(C_L2934010)
public:
	const bool Calculate(const char * pszKeyVal, IValueSet * ptrValList);
};

class C_L3030302 : public virtual IProcessData
{
INIT_CLASS_SINGLETON(C_L3030302)
public:
	const bool Calculate(const char * pszKeyVal, IValueSet * ptrValList);
};

class C_L3030403 : public virtual IProcessData
{
INIT_CLASS_SINGLETON(C_L3030403)
public:
	const bool Calculate(const char * pszKeyVal, IValueSet * ptrValList);
};

class C_CONFIRM15 : public virtual IProcessData
{
INIT_CLASS_SINGLETON(C_CONFIRM15)
public:
	const bool Init(const void * pvdPara, char * pszMsgTxt, int iMsgTxtSize);
	const bool Calculate(const char * pszKeyVal, IValueSet * ptrValList);
	
private:
	map<string, string> m_mpDictionaryField;
};

class C_MARKET1 : public virtual IProcessData
{
	INIT_CLASS_SINGLETON(C_MARKET1)
public:
	const bool Calculate(const char * pszKeyVal, IValueSet * ptrValList);
};

class C_MATCH15 : public virtual IProcessData
{
INIT_CLASS_SINGLETON(C_MATCH15)
public:
	const bool Init(const void * pvdPara, char * pszMsgTxt, int iMsgTxtSize);
	const bool Calculate(const char * pszKeyVal, IValueSet * ptrValList);
	

private:
	map<string, string> m_mpDictionaryField;
};

class CCalculateContractQuotation : public virtual ICalculateContractQuotation
{
INIT_CLASS_SINGLETON(CCalculateContractQuotation)
public:
	const bool Init(const void * pvdPara, char * pszMsgTxt, int iMsgTxtSize);
	void DrawQuotation(IContract * ptrContract, void * ptrvtRetList, ITaskQueue * ptrQueue);

private:
	void CalculatePrice(IValueSet & RetVal, string & strName, double dPrice, vector<string> &  vtArrow);

private:
	vector<string> m_vtArrowBuy, m_vtArrowSell;

};




#endif//__PROCESS_DATA_H__

